]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
messageTray: use a "hot corner" to summon the tray
authorRui Matos <tiagomatos@gmail.com>
Fri, 4 Nov 2011 00:26:49 +0000 (00:26 +0000)
committerRui Matos <tiagomatos@gmail.com>
Mon, 5 Dec 2011 04:51:16 +0000 (04:51 +0000)
Instead of leaving the tray covering the whole last pixel row when it's
hidden, hide it completely. This avoids mouse events not being delivered to
application windows on the last pixel row.

To summon the tray we use a single reactive pixel on the corner.

https://bugzilla.gnome.org/show_bug.cgi?id=663366

js/ui/messageTray.js

index 79dbe3d98b583cbf47061fac817f7d70e7dee455..057b0493f2b4be7f91953667a1572c76bb0e86d5 100644 (file)
@@ -1430,8 +1430,16 @@ const MessageTray = new Lang.Class({
         this._notificationRemoved = false;
         this._reNotifyAfterHideNotification = null;
 
+        this._corner = new Clutter.Rectangle({ width: 1,
+                                               height: 1,
+                                               opacity: 0,
+                                               reactive: true });
+        this._corner.connect('enter-event', Lang.bind(this, this._onCornerEnter));
+        Main.layoutManager.trayBox.add_actor(this._corner);
+        Main.layoutManager.trackChrome(this._corner);
+
         Main.layoutManager.trayBox.add_actor(this.actor);
-        this.actor.y = -1;
+        this.actor.y = this.actor.height;
         Main.layoutManager.trackChrome(this.actor);
         Main.layoutManager.trackChrome(this._notificationBin);
 
@@ -1470,12 +1478,24 @@ const MessageTray = new Lang.Class({
         this._chatSummaryItemsCount = 0;
     },
 
+    _onCornerEnter: function(actor, event) {
+        this._pointerInSummary = true;
+        this._updateState();
+    },
+
     _setSizePosition: function() {
         let monitor = Main.layoutManager.bottomMonitor;
         this._notificationBin.x = 0;
         this._notificationBin.width = monitor.width;
         this._summaryBin.x = 0;
         this._summaryBin.width = monitor.width;
+
+        if (St.Widget.get_default_direction() == St.TextDirection.RTL)
+            this._corner.x = 0;
+        else
+            this._corner.x = Main.layoutManager.trayBox.width - 1;
+
+        this._corner.y = Main.layoutManager.trayBox.height - 1;
     },
 
     contains: function(source) {
@@ -2076,7 +2096,7 @@ const MessageTray = new Lang.Class({
 
     _hideTray: function() {
         this._tween(this.actor, '_trayState', State.HIDDEN,
-                    { y: -1,
+                    { y: this.actor.height,
                       time: ANIMATION_TIME,
                       transition: 'easeOutQuad'
                     });